package com.huatai.bi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huatai.bi.dto.BigScreenPageDTO;
import com.huatai.bi.dto.bigScreen.SaveAsVersionScreenDTO;
import com.huatai.bi.dto.bigScreen.ScreenAuthDTO;
import com.huatai.bi.entity.BigScreenPageEntity;
import com.huatai.bi.query.ScreenQuery;
import com.huatai.bi.vo.bigScreenVO.*;

import java.util.List;

/**
* @author hecai
* @description 针对表【big_screen_page(态势模板)】的数据库操作Service
* @createDate 2024-06-20 14:11:51
*/
public interface BigScreenPageService extends IService<BigScreenPageEntity> {

    /**
     * 修改大屏基础配置
     * @param entity
     * @return
     */
    Boolean updateScreenConfig(BigScreenPageEntity entity);

    /**
     * 根据code切换历史版本
     * @param code
     * @return
     */
    BigScreenPageVersionVO getScreenByCode(String code);

    /**
     * 去除大屏限定
     * @param code
     * @return
     */
    Boolean removeLimit(String parentCode);

    /**
     * 大屏页组件详情
     * @param code
     * @return
     */
    BigScreenPageVersionVO getScreenByParentCode(SaveAsVersionScreenDTO dto);

    /**
     * 修改大屏组件
     * @param bigScreenPageDTO
     * @return
     */
    String updateScreen(BigScreenPageDTO bigScreenPageDTO);

    /**
     * 新增大屏组件
     * @param bigScreenPageDTO
     * @return
     */
    String addScreen(BigScreenPageDTO bigScreenPageDTO);

    /**
     * 另存为一个版本
     * @param code
     * @param versionName
     * @return
     */
    Boolean saveAsVersion(String code,String versionName);

	/**
	 * 修改版本名称
	 * @param code
	 * @param versionName
	 * @return
	 */
	Boolean updateVersionName(String code,String versionName);

    /**
     * 另存为
     * @param parentCode
     * @param screenParentCode
     * @param screenName
     * @return
     */
    Boolean saveAsScreen(String parentCode,String screenParentCode,String screenName);

    /**
     * 获取历史版本
     * @param parentCode
     * @param code
     * @return
     */
    List<ScreenVersionVO> getHistoryVerison(String parentCode, String code);

    /**
     * 分页获取数据
     * @param query
     * @return
     */
    Page<BigScreenPageEntity> getPage(ScreenQuery query);

    /**
     * 根据code删除态势
     * @param code
     * @return
     */
    Boolean removeByCode(String code);

    /**
     * 态势授权
     * @param code
     * @param ids
     * @return
     */
    Boolean authScreenBycode(String code, List<String> ids);

    /**
     * 发布态势
     * @param code
     * @return
     */
    Boolean publishScreen(String code,List<String> dirs,Integer publishOrder);

	/**
	 * 取消发布态势
	 * @param code
	 * @return
	 */
	Boolean cancelPublishScreen(String code);

    /**
     * 下钻列表
     * @param screenParentCode
     * @return
     */
    List<BigScreenDownList> getDownList(String screenParentCode);

    /**
     * 下钻树
     * @param screenParentCode
     * @return
     */
    List<DownTreeListVO> getDownListTree(String screenParentCode);

    /**
     * 根据菜单名称获取大屏列表
     * @param menuName
     * @return
     */
    List<PublishScreenVO> getScreenListByMenuName(String menuName);


    /**
     * 大屏授权
     * @param auth
     */
    void auth(ScreenAuthDTO auth);

    /**
     * 获取大屏授权列表
     * @param code
     */
    List<Long> getAuth(String code);

	List<BigScreenPageEntity> copyScreen(BigScreenPageDTO dto);
}
